home *** CD-ROM | disk | FTP | other *** search
-
- program wc;
- {$I arglist.pin}
- const
- blank = ' ';
- tab = ^I;
- newline = ^J;
- cr = ^M;
- teof = ^Z;
-
- var
- infile : file;
- filename : string[20];
- inbuf : array[1..512] of char;
- words,lines,chars : REAL;
- iptr : integer;
- ch : char;
- inword : boolean;
-
- begin
- words := 0;
- lines := 0;
- chars := 0;
- inword := false;
- if argc <> 1 then begin
- write('Input File Name To Use ');
- readln(filename);
- assign(infile,filename);
- end
- else assign(infile,argv(1));
- reset(infile);
- repeat
- {$I-}
- blockread(infile,inbuf,4);
- {$I+}
- if ioresult <> 0 then begin
- clrscr;
- gotoxy(30,4);
- writeln ('In this file there were...');
- writeln;
- writeln(chars:6:0,' Characters ');
- writeln;
- writeln (words:6:0,' Words ');
- writeln;
- writeln (lines:6:0,' Lines ');
- halt;
- end;
- iptr := 1;
- while iptr <= 512 do begin
- ch := inbuf[iptr];
- chars := chars+1;
- iptr := iptr+1;
- if ch=teof then begin
- clrscr;
- gotoxy(30,4);
- writeln ('In this file there were...');
- writeln;
- writeln(chars:6:0,' Characters ');
- writeln;
- writeln (words:6:0,' Words ');
- writeln;
- writeln (lines:6:0,' Lines ');
- halt;
- end;
-
- if (ch=cr) or (ch=tab) or (ch=blank) then inword :=
- false
- else if (ch=newline) then begin
- inword := false;
- lines := lines+1;
- end
- else if not inword then begin
- inword := true;
- words := words+1;
- end;
- end;
- until eof(infile);
- end.